1. The Field of the Invention
The present invention relates to methods and data structures for identification of a resource that is kept both at a server in a network and in a local cache at a client in the network, where the client can be disconnected from the network, the client can work off line with its local cache, and the client can then be reconnected to the network. The invention makes the identification of the resource possible after the resource has been changed during the period when the client was disconnected from the network. The identification of the resource enables the client to maintain a current version of the resource in the client""s cache prior to disconnecting from and after reconnecting to the network.
2. The Prior State of the Art
With the advent of the personal computer as the standard information tool, individuals everywhere at anytime need access to information. As such, the accessing and sharing of up-to-the-minute information by multiple parties has become increasingly vital to businesses and individuals who operate as users in a computer network environment of clients accessing resources stored on servers. Users who need portable computing, such as is available through the use of a laptop PC, require that the laptop function as a client in a network that can be frequently connected to and disconnected from the network. These users can access and share up-to-the-minute information using World Wide Web Distributed authoring and Versioning (WebDAV) which is an extension to HTTP/1.1 using XML elements. In a network, WebDAV allows clients to perform remote web content authoring operations to create, remove, alter, and query information about resources, such as Web pages, documents, and e-mail. Examples of resource information available in WebDAV include authorship and creation date. The WebDAV specifications are proposed to be written in eXtensible Mark-up Language (XML), which provide a robust tool for specifying distributed authoring and versioning.
With the increasing use of the Internet for distributed authoring and versioning, a need for standardization has been realized in WebDAV as an extension to the Hypertext Transfer Protocolxe2x80x94HTTP/1.1 as defined in RFC 2068. The WebDAV has been documented in RFC 2518 and in RFC 2291. RFC 2068, RFC 2518, and RFC 2291, also referenced herein as the currently published HTTP and WebDAV drafts, are incorporated herein by reference.
Various weakness of network servers running the WebDAV protocol exist in its current interoperable implementation standard. One such weakness is the server""s inability to identify a specific version of a specific resource. This disability is particularly problematic when a user alters a resource after disconnecting its respective client from the network. When the client is again connected to the network, the network is often unable to identify the resource that the client. A further weakness presents itself when a resource is changes on a server when a client is disconnected from the network. After reconnecting the client to a server in the network, the server is unable to identify the client""s uploaded resource.
What is needed is a method and data structure that allows for identification of a specific version of a specific resource, even though a user creates, alters, or removes the resource after disconnecting its respective client from the network and then reconnecting the client for the purpose of uploading the changed version of the resource. What is also needed is a method and data structure that provides a static and unique identifier for a network resource that does not change even when a resource at a server has its file name changed, or the resource is deleted from the server and its file name is re-used for another resource.
The present invention provides methods and data structures for identifying a specific version of a specific resource, even though the resource is changed at a server or off line in a local cache of a client while the client is disconnected from the network. When the client is again connected to the network, the server is able to identify the changed version of the resource that the client wishes to upload or download. In this circumstance the present invention allows a client, prior to disconnection from the network, to download a copy of the resource and its respective xe2x80x9cresource tagxe2x80x9d representing a specific version of a specific resource. Essentially, the resource tag includes a resource identifier and a corresponding version thereof. Both resource and resource tag are locally cached at the client prior to the disconnection of the client from the network. The cache remains available to the user after the client is disconnected from the network. While this client is disconnected, the resource stored at the server can be modified by other network clients, in which case the server updates the resource tag of the modified resource. Similarly, the user of the client can change the copy of the resource in the client""s cache. When the client again connects to the network, the client can upload the changed version of the resource from its cache to the server. In this case, the server stores the resource and returns a new resource tag to the client for local caching, and the client need not download the resource. Alternatively, if the client connects to the network and uploads its cached resource tag to the server, the server may then compare the resource tag stored at the server to the uploaded resource tag to determine if the server has stored a different version of the resource. In this case, the server responds by downloading to the client changes to the resource along with a resource tag that represents the server""s version of the resource. Implementation of the present invention allows for synchronized versions of the resource at the client and the server in the foregoing two scenarios.
The present invention also provides methods and data structures that provide a unique identifier of a resource, referred to herein as the resource UID. The resource UID will not change despite changes to the URL or the resource tag of the resource. When a resource at a server has its file name changed, or the resource is deleted from the server and its file name is re-used for another resource, in this circumstance a client reconnecting to the network can request information about the resource with the resource UID that it had previously downloaded and the present invention will enable the server to identify and process the client""s request regarding the resource. Each resource UID of each resource can be cached locally at a client and can be stored at network server in an index. The index allows the resource to be identified uniquely across a collection in a database at a server, across a database at the server, across the entire server, or across all servers in the network.
Advantageously, the methods and data structures allow the same client to be connected to the same server, or the same client can be connected to different servers because the data is replicated among the servers. This allows the client to synchronize with any server and symmetrical information between the client and the server can be obtained. Thus, a client can be synchronized with any server from an arbitrary set of servers that have the same information replicated. Additionally, it will be understood that the methods and data structures can be used with any number of clients and servers any desired configuration.
Additional advantages of the invention will be set forth in the description which follows, and in part will be obvious from the description, or may be learned by the practice of the invention. The advantages of the invention may be realized and obtained by means of the instruments and combinations particularly pointed out in the appended claims. These and other features of the present invention will become more fully apparent from the following description and appended claims, or may be learned by the practice of the invention as set forth hereinafter.